package cn.imokay.oom;

import java.util.HashSet;

/**
 * -XX:PermSize=6M -XX:MaxPermSize=6M
 * jdk6下运行时:OOM PermGen space(永久代/方法区溢出)
 */
public class RuntimeConstantPoolOOM {
    public static void main(String[] args) {
        //使用集合保持常量池引用,避免full gc回收常量池行为
        HashSet<String> strings = new HashSet<>();
        //short范围足以让PermSize产生OOM
        short i = 0;
        while (true) {
            //String::intern()方法:若常量池有,则返回常量池中对象引用,
            //否则将字符串加入常量池然后返回引用
            strings.add(String.valueOf(i++).intern());
        }
    }
}
